#include <iostream>
using namespace std;

class Test{
public:
	void converStr(string& str,int start,int end){
		int left = start;
		int right = end - 1;
		while(left < right){
			swap(str[left],str[right]);
			left++;
			right--;
		}
	}
	void removeExtraSpaces(string& str){
		int slow = 0;
		for(int fast = 0;fast < str.size();fast++){
			// 先找到第一个非空格的数字
			if(str[fast] != ' '){
				if(slow != 0) {str[slow++] = ' ';}
				while(str[fast] != ' ' && fast < str.size()){
					str[slow++] = str[fast++];
				}
			}
		}
		str.resize(slow);
	}
	string reverseWords(string s){
		// 1. 去除多余的空格
		removeExtraSpaces(s);
		// 2. 整体转换
		converStr(s,0,s.size());
		// 3. 用双指针，一个指示开始位置，结束位置用循环来找，当找到空格时则开始反转。
		//    因为已经去了重复空格，所以只有一个空格，因此slow用fast+1；fast迭代会自己加一
		int slow = 0,fast = 0;
		for(;fast <= s.size();fast++){
			if(s[fast] == ' ' || fast == s.size()){
				converStr(s,slow,fast);
				slow = fast + 1;
			}
		}
	}
};


int main(){
	
	return 0;
}
